#include <iostream>
#include <string>
using namespace std;

//引用基本语法 int a=10;int &b=a;
//引用初始化后不可以修改
//对数组建立引用 int arr[10];int(&parr)=arr;
//注意点：1.引用必须引一块合法的内存空间。2.不要返回局部变量的引用。3.如果函数的返回值是引用，函数调用可以作为左值。

//引用的本质是一个指针常量
//Type& ref = val;//Type *const ref=&val;

//指针的引用 一级指针的引用可以代替二级指针

//常量引用
void showValue(const int& val)
{
	//val+=10;如果只是想显示内容而不修改内容，那就用const修饰这个形参
}

//struct和class是一个意思，唯一的不同 默认权限struct是public,class是private

//单例模式：一个类只有一个实例的对象
class Printer
{
private:
	Printer() { m_Count = 0; }
	Printer(const Printer& p);
	static Printer* singlePrinter;
	int m_Count;
public:
	static Printer* getInstance()
	{
		return singlePrinter;
	}
	void printText(string text)
	{
		cout << text << endl;
		m_Count++;
	}
};
Printer* Printer::singlePrinter=new Printer;

int main() {
	Printer* printer = Printer::getInstance();
	printer->printText("离职报告");
	printer->printText("入职报告");
}

//静态成员变量 在类内声明类外初始化；static int m_Age; 会共享数据
//静态成员函数 不可以访问普通成员变量，可以访问静态成员变量
